1. Field of the Invention
The present invention relates to an improvement in technology for processing information existing in a distributed manner in a network, and more particularly to an improvement in agent-oriented information processing technology that adapts to a change in situations.
2. Description of the Related Art
In recent years, information processing systems such as computers have seen progressive downsizing and advances in the development of network environments, such as the Internet. For this reason, the information processing equipment and methods are largely experiencing a shift to a distributed system in which elements such as data files and function libraries are distributed among nodes in a network. Along with the change, there have been further advancements in providing an open network environment, with local networks of companies and research laboratories, for example, being connected to wide area networks, such networks connected to wide area networks being known as open networks.
In a typical large-scale open network, data files or function libraries that are distributed among a plurality of nodes are often combined to form a single piece of software, this class of software being known as a distributed system. It can be envisioned that such distributed constituent elements can be moved to another node or directory or can be subjected to a change in name or access authority in response to node management or network management situations. In making such changes, however, the following problems arise.
First, when a request is made for software processing, the request is input as a request description such as a message or command. When making this input, specific constituent elements with regard to processing located at a given node are specified. However, when the specified constituent elements are moved to another node, to specify the new destination node, it is necessary to either reenter or correct the input to the software. In particular when part of the software is configured to access a transferred constituent element, the movement of the constituent element changes the configuration of the software itself. In this case, it is necessary to change the accessing software part so as to specify the new destination node.
In the past, because elements such as nodes, functions, and files were named explicitly, when such functions and files were moved, the software or input needed to be changed accordingly. Furthermore, this type of specification needed to be made before the start of processing.
In distributed systems, therefore, in order to configure software to provide flexible response to reliably provide service to users, it is very important to be able to respond flexibly to such changes. In particular in the change of such changes, it is desirable to be able to change a specification even after processing has started and, if at all possible, automatically, without the need for human intervention.
In a network, recent years have seen attention being focused on agent-oriented technologies as a means for implementing such as flexible software architecture. This agent-oriented technology is a software-development technology which aims to make up a piece of software by treating agents as units, an agent being a unit of processing in software, the goal being to achieve autonomous and flexible response to environmental changes. Agents can be classified as mobile agents, which are capable of being moved between nodes that made up a network, and stationary agents, which do not possess such mobility.
An agent system is a system in which an agent performs information processing with the goal of satisfying requests from a user. If a single system uses a plurality of agents, it is possible to perform highly efficient information processing in a distributed system such as a distributed processing network. Such system as to use a plurality of agents is known as a multi-agent system.
The term xe2x80x9cnodexe2x80x9d refers to a logical unit that makes up a network, and if an agent is considered to be a program, a node serves the function of an interpreter or operating system that supports the operation of the agent. This type of node is known as a platform, which can exist as a single computer, and there are cases in which a plurality of nodes exists in one computer.
For example, in the Japanese Unexamined Patent Application publication H7-182174, there is disclosed a method of implementing remote programming. This remote programming is such programming as to transfer an agent from the node at which processing was begun to another node in a distributed system.
(Agent System Example)
Next, an example of an agent system that uses the above-noted agent to implement remote programming will be described. Specifically FIG. 28 is a functional block diagram that shows an example of a mufti-agent system which uses a mobile agent. The agent system that is shown in this drawing has a network 800N that connects a plurality of nodes 800 and, while a large number of nodes 800 can be provided in the system, two representative nodes are shown in FIG. 28. Of the nodes 800, the node that is used by the user in creating an agent will be called the local node (800L) and the node that is the destination for the generated agent will be called the remote node (800R). The local node 800L and the remote node 8008 have mutually similar configurations, and the agents are treated as processes. The term xe2x80x9cprocessxe2x80x9d as used herein refers to a unit of processing that is managed by an operating system, and the simultaneous management of a plurality of processes is known as mufti-process management.
In the above-noted mufti-agent system, each node 800 has an input/output means 803 (L, R) for the purpose of the user generating an agent and for receiving the results of information processing that is performed by an agent. An agent management means 804 (L, R) of each node, in addition to being used for generating and deleting an agent, is used to move an agent to another node by transferring information of the agent to the other node, and in the same manner to receive an agent from another node.
If a user wishes to perform some type of information processing using the above-described type of agent system, the user creates an agent at the local node 800L by giving an indication from the input/output means 803L to the agent management means 804L.
Then, in the most basic case, the user issues a script from the input/output means 803L to a generated agent. The script is an action program for an agent, and is described with specific contents that indicate, for example, of which node is to be moved to and what processing is to be performed. As a more specific example of a script, it can be envisioned that movement is to be made to node A, and a copy of file a is to be sent to a user node, after which movement is made to node b, and a copy of file b is sent to a user node. An interpretation/execution means 802 (L, R) that is provided at each node executes such a script so as to apply the agent, thereby achieving the desired object of information processing.
In the above-noted case, an agent information storage means 801 (L, R) at each node stores information required for the agent. In addition to the above-noted script, the information required for the agent includes, for example, the variables necessary for interpretation and execution of the script (these being known as script variables) and, if required, information or files collected by the agent. As instructions described into a script for an agent, in addition to instructions that can be executed at only a single node, there are movement instructions which cause movement of an agent from one node to another. The interpretation/execution means 802L sequentially executes instructions of the script and, if it is necessary to execute a movement instruction, it specifies the destination node and issues a request to the agent management means 804 to move the agent. In this case, the agent management means 804L would perform the following processing to transfer the agent.
Specifically, the agent management means 804L issues a request via the network 800N to the agent management means 8048 at the remote node 8008 to prepare to accept the agent. When this is done, the agent management means 8048 that receives this request performs preparation for accepting the agent, such as assignment of resources and making settings of processes that perform agent management, after which it issues a notification to the agent management means 804L at the local node 800L that these preparations have been completed.
Upon receiving the above-noted notification, the agent management means 804L reads and agent information such as the script and the internal agent status at the time of interpretation and execution of the above-noted movement instructions from the agent information storage means 801L, and transfers this agent information to the remote node 8008. The agent management means 8048 of the remote node 8008 first stores the transferred agent information in the agent information storage means 8018, and then notifies the interpretation/execution means 8028 of having done so, whereupon interpretation and execution begins.
When the agent transfer is successfully completed in the above-noted manner, the agent management means 804L at the local node 800L ends the process, and releases now-unnecessary resources such as memory and CPU time.
At the remote node 8008 to which the agent was transferred, processing proceeds, using the agent information within the agent information storage means 8018. There are cases in which the processing results in completion at the remote node 8008, and cases in which the agent is transferred back to the local node 800L. If the agent is transferred once again in this manner, the script execution will be executed again at the local node 800L. The above-noted remote programming enables flexible processing in a distributed system.
In the above-noted type of remote programming, even if the node configurations differ, if the interpretation/execution means and agent management means and the like are configured to suit the node-specific hardware and operating system while using agent information that is common among the nodes, compatibility can be achieved even among nodes that have different configurations. By adopting this type of configuration, it is possible to transfer and execute scripts to perform the above-noted flexible processing, even among computer systems that have different operating systems and hardware.
For example, in an agent system such as described above, if a user wishes to collect a number of files from the network, an action program (script) to achieve this object can be given to an agent and the agent sent out to the network. The agent that is sent out to the network acts autonomously according to the script that it has been given. For this reason, because there is no need to maintain continuous communications between the user node and the agent, compared with such network functions of the past as ftp and telnet, there is the advantage of immunity to circuit faults.
There is another known prior art for the purpose of performing processing which bridges across a plurality of nodes in a network, this being described in Oren Etzioni and Daniel Weld xe2x80x9cA Softbot-Based Interface to the Internetxe2x80x9d, in Communications of ACM. In this technology such previously available network functions as $p, which is used to perform file transfer, and telnet, which implements a virtual terminal function for the purpose of performing a remote login are used to perform processing that bridges across a plurality of nodes. Software performs trial-and-error use of functions automatically, based on information that is collected during operation, flexible planning being performed in response to situations, so as to select functions in accordance with changes in configuration, such as with regard to files.
For example, if a desired function is transferred to another node, since an attempt to access the function at the node before transfer would fail, planning is performed at the original node, so as to change the access destination to the second candidate for re-access. According to this technology, it is possible to achieve flexible operation in response to status at various points in time. In this technology, the use of functions such as telnet and ftp is done within a range for which compatibility has been ascertained.
When an agent is operating at a particular node, it often must make use of resources such as files and software that are characteristic of other nodes.
In such cases, a stationary agent, which does not have mobility, will cooperate with an agent that exists at another node, making use of contracted network protocols or other procedures. In contrast to this, in the case of a mobile agent, not only will it cooperate, because it can also move to another node to make use of the resources at the other node, it can make use of either cooperation or movement.
If for example, because of the need as noted above to use resources of another node, it is necessary to make use of another node, a mobile agent must be able to either cooperate or move. In the method of the past, in which a script was described beforehand as an action program for a mobile agent, in a case in which either cooperation or movement is required, which is actually performed must be established beforehand as an operational sequence. For this reason, whether cooperation or movement is desirable will differ, depending upon a variety of conditions, such as the reliability and bandwidth of the circuit that connects the nodes, and the node characteristics.
For example, in a case in which an agent will attempt to make use of a resource at another node to which the node where the agent exists is connected by a circuit having low reliability or low bandwidth, movement is more desirable than cooperation. That is, in the case of cooperation, although there is a need to maintain communication between the nodes, over a circuit having poor reliability or low bandwidth, there is a tendency for communications to be broken off, in which case the cooperative processing is interrupted. In contrast to the case of cooperation, if the agent itself moves to the other node, even if the circuit via which the movement was done is broken, there is no problem created at the destination node of the movement, thereby enabling processing to continue. In this case, when the processing is completed, the agent may return to the original node when the circuit status is restored.
Even if an agent at a node is a mobile agent that has a function of mobility, unless another node at which the resource is to be used supports mobile agents, that agent will be forced to cooperate with another agent of the other node. That is, unless the other node has a means for receiving the agent information and causing the agent to act, even if it is possible to transfer the agent to that node, it will not be possible for the mobile agent to continue processing.
Therefore, at the point at which the action program for a mobile agent is described, for each case in which either movement or cooperation is required, it is desirable that various conditions that affect which is desirable be understood and the appropriate selection of movement or cooperation be made. It is difficult, however, to gain a grasp of such various conditions beforehand and, even if it were possible to do understand such various conditions beforehand, there are cases in which a condition changes during the operation of a mobile agent, after the script for the mobile agent is established. For example, as described above, when constituent elements such as distributed files or libraries are to be moved among nodes, the node at which the resource to be used exists itself changes. For this reason, at the point at which the action program for the mobile agent is described, it becomes difficult to establish whether movement or cooperation is the desired choice.
As is clear from the foregoing discussion, in a case in which a mobile agent is required to either move or cooperate, rather than establishing this choice as fixed, it is desirable to be able to establish this dynamically on-the-fly, according to the situations at the required time. However, as described above, in the prior art, in which the action program for a mobile agent was described as a script beforehand, it is necessary to establish beforehand whether movement or cooperation is to be performed, in terms of an operational sequence. In this type of method of the past, therefore, it is clearly difficult to establish whether movement or cooperation is to be done dynamically, in accordance with the situation. In particular, with open-type networks that are of large-scale, because the larger the scale of the network, the more often the software configuration changes, there is a great desire to be able to accommodate this type of change.
When a mobile agent is to be moved to another node, it is not possible for the user of the mobile agent to directly manage the destination node of the movement. For this reason, when some fault occurs at the destination node, it is difficult to take appropriate action with respect to this fault. Additionally, in a case as described above as well, in which communications are cut off because of the low reliability or low bandwidth of the circuit, it is difficult to take appropriate action with respect to such a fault.
That is, in operating a mobile agent, the following two points should be kept in mind. The first point is that it is often the case that one of the major reasons for using a mobile agent is the low reliability or low bandwidth of a communication circuit. For this reason, the major field of application for a mobile agent is that of mobile computing that makes use of a portable terminal. When using such circuits that have low reliability, a large problem is that of what type of action should be taken when exceptions such as errors occur.
The second point is that a mobile agent can be operated on a machine that is out of the management scope of the user. For this reason, when an exception situation occurs in the operation of an agent on such a machine, it is significantly more difficult to take action than it would be in the case if a mobile agent were not being used. In particular when a destination machine that is connected by a communication circuit of low reliability is used, such as noted with regard to point 1, this difficulty becomes prominent.
In addition to the above, in the prior art method of describing the action program for a mobile agent as a script beforehand, because it is necessary to describe all the operational examples of the agent, this operation itself becomes troublesome.
In the method of Etzioni et al, it is necessary to continue mutual access between the local machine and the remote machine and sending and receiving of data. For this reason, there is the problem that if the communication circuit develops a fault during processing that cuts off the access path, it is not possible to continue normal processing. In addition, there, are cases in which it is necessary to make detailed access of information contents at a remote node and to change the type of processing performed, and to perform repeated access of information at a remote node, and cases which demand that processing be performed in real time to some degree, these cases making it more efficient to performing information processing as a process operating on the remote machine.
3. Object of the Invention
Therefore, an object of the present invention is to provide an agent system that, when it is necessary for an agent to perform some task at another node, is capable of dynamically judging at that point, based on the situations at that time, whether to move the agent or have the agent cooperate. Given such an agent system, it is possible to perform highly efficient information processing that is responsive to changes in situation.
The above-described problems in the prior art are solved by an improvement in agent-oriented technology according to the present invention. In one aspect of the present invention, there is provided an agent system in which processing information is performed by causing an agent to act in a network that has a plurality of platforms. This agent system has a movement means for causing an agent to move between platforms, and a means for causing cooperation to be performed between a plurality of agents. This system further has a decision means for making a decision, when it becomes necessary for an agent currently located at a platform to make use of another platform for the illustrative purpose of utilizing resources of the other platform for the illustrative purpose of utilizing resources of the other node, with regard to whether to cause the agent to move to the other platform or cause the agent to cooperate with another agent that exists at the other platform.
In order to perform the above-noted type of judgment, the above-noted agent system uses some information that serves as a criterion for the judgment. Such information used as, a typical judgment criterion may include information stored in agent profile, such as agent attributes with regard to whether or not the individual agents have the ability to move between platforms. Such information used as the typical judgment criterion also may include information stored in platform profiles, which typically includes information with regard to whether individual platforms are capable of accepting and activating an agent. It is also possible to use information with regard to the reliability of the network circuits that connect the platforms. By storing at least these various types of information as a judgment criterion beforehand, it is easy to make the above noted judgment, based on this judgment criterion. It is also possible to send a test message for either movement or cooperation to the target platform, and then making a judgment based on whether or not a message is returned which satisfies conditions. It is also possible to make the judgment based on whether a file for movement or cooperation having a characteristic file name exists at the target platform.
As a result, even when there is a difference either in the mobility among agents, in the ability to support mobile agents among platforms, it is possible to perform processing with making use of another platform. Similarly, even when there is a difference in the reliability of circuits that connects platforms due to what platforms are combined, it is possible to perform processing with making use of another platform. For example, to move an agent to another platform, it is necessary that both the current platform and the destination platform support the movement and also necessary that the agent itself have mobility. When the reliability of the circuit that connects the platform at which the agent currently exists to another platform is low, since an attempt to perform cooperation could be envisioned as resulting in a possible cutoff of messages midway, movement of the agent would be the appropriate choice.
It is desirable that the above-noted agent system be configured so as to generate and execute an agent plan that satisfies the given requests. In order to create an action plan for an agent that is responsive to the situation and achieve processing with mating use of another node, dynamic selection is made, based on conditions, of whether to cause movement between nodes or to cooperate with another agent. This enables highly efficient information processing that is responsive to changes in the network. Therefore, because it is possible to effectively utilize movement and cooperation of agents by planning in response to network changes, it is possible to perform effective information processing even in an open network.
It is desirable that the above-noted agent system be configured so that it responds to various exceptions when an agent attempts a move between platforms. Examples of exceptions that tend to occur when movement is done include a failed communication with the destination of the move, an invalid specification of the destination, the lack of support of the destination for the mobile agents, and an insufficiency in resources at the destination. The action to be taken in each of these cases is expressed as the exception description. Using this type of exception description, it is possible to effectively handle exceptions when they occur. With regard to a loss of communication because of a low reliability on the communication circuit, it is desirable that information with regard to the reliability of the communication circuit be prepared beforehand at the platform, for example, and to establish beforehand how the loss of communication is to be handled when it occurs on a circuit over which an attempt is made by an agent to move. By doing this, even if the reliability of the communication circuit is low, resulting in a tendency to communication being lost, there is achieved an immunity to impaired operations and failures or the like.
The above-noted agent system can be configured either so that the agent itself manages a procedure for movement to another platform, or so that the platform is the focus of the management. By selecting dynamically whether a series of processing procedures related to the movement is to be performed chiefly by the agent or chiefly by the platform, the degree of freedom with regard to how the agent moves is increased. This enables an improvement in the autonomy of the agent and the overall processing efficiency.
It is also possible for the above-noted agent system to be configured so as to select an appropriate movement tinning, and to select an appropriate destination from a plurality of destination platform candidates. It is also possible when an agent moves sequentially to a plurality of platforms, to establish an optimum sequence of movement, responsive to conditions. These improvements enable an improvement in the system processing efficiency.
It is further possible for the above-noted agent system to be configured so that it issues an indication for movement between platforms in response to the status of each platform. Because it is possible to dynamically assign agents to each of the platforms in response to platform status, it is possible to improve the system processing efficiency.